In a process called internationalization, a computer program is designed with text, labels, messages and other locale-sensitive objects separated from source code and kept in a repository of text strings in a first language (e.g. English) that are translatable, for example, a resource bundle in Java, or resource-only dynamic link library (DLL) in Windows. Such separation of the source code from the locale-sensitive information allows the source code to be maintained independent of various language versions of the product. For example, a resource bundle class may be created in Java called “MyResource” to hold all English text that is ever displayed by the computer program. Such separation allows easy customization of the product because all translatable information is identified and isolated into the repository (in a process called “localization”). In the example, to translate a product, one would replace “MyResource” with an equivalent resource bundle containing the translatable text strings in a second language, such as French, e.g. called “MyResource_fr_FR” for France and “MyResource_fr_CA” for Canada. For more information, see an article entitled “Java Internationalization: Localization with ResourceBundles” by John O'Conner published October 1998 which is incorporated by reference herein in its entirety and available at http:%% java.sun.com%developer%technicalArticles%Intl% ResourceBundles%. In this web address and in all other addresses below, a URL is obtained by replacing “%” with “/”.
The above-described repository of translatable text strings may be reviewed and edited by use of a software program called “editor tool”, such as “Resource Bundle Editor” by David Green published Jul. 6, 2004 available at https:%%resourcebundleeditor.dev.java.net, Copyright MAKE Technologies Inc. A user interface of this editor tool presents three main areas: (1) a first area 1 (FIG. 1A) on the left side, where the keys of the resource bundle are presented and selecting a key causes the appropriate text to show upon the right (2) a second area 2 (FIG. 1A) on the right, in the top half of the user interface, which displays the selected key in the first language (e.g. English) and (3) a third area 3 (FIG. 1A) on the right, in the bottom half of the user interface, which displays the same key but in the second language (e.g. French). Using these three areas in the user interface one or more resource bundles are edited by a human translator. Another such editor tool is the Zaval Java Resource Editor (also called “JRC Editor”), version 2.0 available at the following website http:%%zaval.org%products%jrc-editor%.
One problem with use of the above-described editor tools is that the translatable text strings are displayed to the human translator isolated from their context, and a translation thereof may contain errors which would not be present if the human translator had access to the context in which the translatable text string appears. Hence when using such editor tools, human translators proof-read screens of the translated product, to ensure that the translated text string is properly displayed and properly translates the text in the context of the display. The just-described proof-reading process, called Translation Verification Testing (TVT), is time-consuming and expensive.
TVT is described in detail in U.S. Pat. No. 6,311,151 granted to Yamamoto et al on Oct. 30, 2001 (filed Jul. 28, 1999) and assigned to IBM Corp, entitled “System, program, and method for performing contextual software translations” is incorporated by reference herein in its entirety, as background. FIG. 1B illustrates an example in which a GUI button is stored in a Java ResourceBundle localization file. In FIG. 1B, a window 50 is shown with GUI buttons 51 and 53 created using a Java Jbutton call. In this example, a command “JButton(res.getString (“OK”)) 54 creates a GUI button, and labels it by doing a resource file lookup for the text that should correspond to an “OK” button. Java resource files are depicted collectively as 55, and an English language reference file is shown as 56. In file 56, entry 58 indicates that the text that corresponds to an “OK” button is “Ok”. Therefore, command 52 creates a GUI button with the text “Ok”.
Similarly, the command “JButton(res.getString (“CANCEL”)) 54 creates a GUI button, and labels it by doing a resource file lookup for the text that should correspond to an “CANCEL” button. In file 56, entry 57 indicates that the text that corresponds to an “CANCEL” button is “Cancel”. Therefore, command 52 creates a GUI button 53 with the text “Cancel”. Since resource files store the text to be displayed as Java objects, the introspective properties of the Java environment can be used to allow human translators to directly edit the application text using a pop-up editor. Each text entry in the Java resource files is stored as a Java JComponent, with the resource bundle name and key attached as properties to each JComponent text entry.
According to U.S. Pat. No. 6,311,151, when a translator examines a text object, these properties are introspected along with the JComponent hierarchy, so the translator can edit the correct text entry. When the pop-up editor is activated, a getText call is made to the resource file object, which returns the present text to the editor. This text is displayed to the translator, who then may edit it. After the translation/edit is complete, the new text is stored in the object using a setText call. Finally, the object, with the new text, is stored back into a Java ResourceBundle file. Thereafter, the software application can be executed using the modified objects, which will then show the translated text on the display.
FIG. 1C is described by U.S. Pat. No. 6,311,151 as follows: an application 100 is built, the UI objects, combined with contextual information, is stored in one or more files 110. A copy of these files 120 is sent to the translators. The translators will then execute the contextual translation tool 130, which will use the data in files 120 to build displays similar to those of the original application 100. The translator may then translate the text of the displays in the correct context, to provide a much more accurate and efficient translation process, with respect to prior techniques. The edited text can be stored back into files 120, which can then be read by the original application 100. Files 110 and 120 appear, to the inventors of the current patent application, to be not in any source code form. Instead, files 110 and 120 appear to be in binary, for use by a Java application, which displays a graphical user interface (when executed by a Java virtual machine).
Contextual translations of text strings that are displayed by software programs are also described in one or more of U.S. Pat. Nos. 6,275,790, 6,735,759, 6,567,973, and 6,782,529. Each of the just-described four patents is incorporated by reference herein in its entirety, as background. Such editor tools are also described in one or more of US Patent Applications 20020144253, 20030135360, 20031035657 and 20030137530. Each of the just-described four patent applications is incorporated by reference herein in its entirety, as background.